package com.adtech.export.util;

import com.adtech.export.coverters.PropertyConverter;
import com.adtech.export.coverters.PropertyConverterBean;

/**
 * 属性转换器工具
 * @author Puzhijun
 * */
public class PropertyConverterUtils {
	
	private static final PropertyConverterBean converterBean;
	
	static {
		converterBean = PropertyConverterBean.getInstance();
	}
	
	/**
	 * 注册一个类型转换器
	 * @param clazz 类型Class
	 * @param converter 转换器
	 * @return PropertyConverter
	 */
	public static <T> PropertyConverter<T> registerConverter(Class<T> clazz, PropertyConverter<T> converter) {
		return converterBean.registerConverter(clazz, converter);
	}
	
	/**
	 * 注销一个类型转换器
	 * @param clazz 要注销的类型
	 * @return PropertyConverter
	 */
	public static <T> PropertyConverter<T> unRegisterConverter(Class<T> clazz) {
		return converterBean.unRegisterConverter(clazz);
	}
	
	/**
	 * 注销所有的类型转换器
	 */
	public static void unRegisterAllConverters() {
		converterBean.unRegisterAllConverters();
	}
	
	/**
	 * 转换值
	 * @param clazz 类型
	 * @param value 值
	 * @return 返回已经转换了的值
	 */
	public static Object converter(Class<?> clazz, Object value) {
		return converterBean.converter(clazz, value);
	}
}
